package com.jlcloud.core.jwt.props;

import com.jlcloud.core.jwt.enums.SingleLevel;
import io.jsonwebtoken.JwtException;
import lombok.Data;
import com.jlcloud.core.jwt.constant.JwtConstant;
import org.springframework.boot.context.properties.ConfigurationProperties;

/**
 * JWT配置
 *
 * @author By: JlCloud <br>
 * @Package: com.jlcloud <br>
 * @CreateTime: 2024-12-03 21:45 <br>
 * @Copyright: 2021 www.jilianjituan.com Inc. All rights reserved. <br>
 * @Caution 注意：本内容仅限于冀联人力集团内部传阅，禁止外泄以及用于其他的商业目的 <br>
 */
@Data
@ConfigurationProperties("jlcloud.token")
public class JwtProperties {

	/**
	 * token是否有状态
	 */
	private Boolean state = Boolean.FALSE;

	/**
	 * 是否只可同时在线一人
	 */
	private Boolean single = Boolean.FALSE;

	/**
	 * 单人模式级别(ALL 全部平台只能有一个，CLIENT 不同客户端只能有一个)
	 */
	private SingleLevel singleLevel = SingleLevel.ALL;

	/**
	 * token签名
	 */
	private String signKey = "";

	/**
	 * token密钥
	 */
	private String cryptoKey = "";

	/**
	 * 获取签名规则
	 */
	public String getSignKey() {
		if (this.signKey.length() < JwtConstant.SECRET_KEY_LENGTH) {
			throw new JwtException("请配置 jlcloud.token.sign-key 的值, 长度32位以上");
		}
		return this.signKey;
	}

}
